home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 38 / Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso / -seriously_amiga- / programming / arexx / ademl2ag / a2g.rexx next >
OS/2 REXX Batch file  |  1999-01-25  |  3KB  |  122 lines

  1. /* ARexx Script */
  2.  
  3. IF ARG() ~=1 THEN DO
  4.     SAY "USAGE: a2g.rexx <filename>"
  5.     EXIT 5
  6. END
  7.  
  8. ARG filename
  9.  
  10. ADDRESS COMMAND
  11.  
  12. CALL OPEN(guide,filename'.ag','W')
  13. CALL WRITELN(guide,'@DATABASE ADE mailinglist')
  14. CALL WRITELN(guide,'@AUTHOR ZAP')
  15. CALL WRITELN(guide,'@NODE main')
  16. CALL WRITELN(guide,'')
  17.  
  18. CALL OPEN(fil,filename,'R')
  19. SAY 'Scanning 'filename' and Creating Main Node...'
  20. DO cx=1 TO 9999
  21.     IF EOF(fil) THEN BREAK
  22.     dateline = 'slut'
  23.     DO y=1 TO 9999
  24.     IF EOF(fil) THEN BREAK
  25.     line=READLN(fil)
  26.     chk = LEFT(line,5)
  27.     IF chk = 'Prece' THEN BREAK
  28.     SELECT
  29.         WHEN chk = 'Subje' THEN DO
  30.         subjline = line
  31.         END
  32.         WHEN chk = 'From:' THEN DO
  33.         dateline = line
  34.         END
  35.         OTHERWISE
  36.     END
  37.     END
  38.  
  39.     IF dateline = 'slut' THEN BREAK
  40.  
  41.     subjline=RIGHT(subjline,LENGTH(subjline)-9)
  42.     subjline=subjline'                          '
  43.     subjline=LEFT(subjline,26)
  44.  
  45.     DO z=1 TO 26
  46.     v=POS('"',subjline)
  47.     IF v=0 THEN BREAK
  48.     subjline = OVERLAY("'",subjline,v)
  49.     END
  50.     dateline=RIGHT(dateline,LENGTH(dateline)-6)
  51.     CALL WRITELN(guide,'  @{" 'subjline' " LINK 'cx'}  'dateline)
  52.     tot = cx
  53.     DO y=1 TO 9999
  54.     IF EOF(fil) THEN BREAK
  55.     line=READLN(fil)
  56.     chk = LEFT(line,8)
  57.     IF chk = ' From ow' THEN BREAK
  58.     IF chk = 'From own' THEN BREAK
  59.     IF chk = ' From gg' THEN BREAK
  60.     IF chk = 'From gg-' THEN BREAK
  61.     IF chk = ' From ad' THEN BREAK
  62.     IF chk = 'From ade' THEN BREAK
  63.     END
  64. END
  65. CALL CLOSE(fil)
  66. CALL WRITELN(guide,'')
  67. CALL WRITELN(guide,'@ENDNODE main')
  68. SAY 'Total Links 'tot
  69. CALL OPEN(fil,filename,'R')
  70. SAY 'Creating Nodes....'
  71. cx = 1
  72. DO x=1 TO 99999
  73.     IF EOF(fil) THEN BREAK
  74.     line=READLN(fil)
  75.     chk = LEFT(line,5)
  76.     SELECT
  77.     WHEN chk = 'Subje' THEN subjline = line
  78.     WHEN chk = 'From:' THEN fromline = line
  79.     WHEN chk = 'Date:' THEN dateline = line
  80.     WHEN chk = 'Prece' THEN DO
  81.         CALL WRITELN(guide,'@NODE 'cx'')
  82.         CALL WRITELN(guide,'  'fromline)
  83.         CALL WRITELN(guide,'  'dateline)
  84.         CALL WRITELN(guide,'  'subjline)
  85.         skip = 0
  86.         DO z=1 to 9999
  87.         IF EOF(fil) THEN BREAK
  88.         line=READLN(fil)
  89.         chk = LEFT(line,8)
  90.         IF z < 2 THEN DO
  91.             IF chk = 'Reply-To' THEN skip = 1
  92.             IF chk = 'Errors-T' THEN skip = 1
  93.         END
  94.         IF chk = ' From ow' THEN BREAK
  95.         IF chk = 'From own' THEN BREAK
  96.         IF chk = ' From gg' THEN BREAK
  97.         IF chk = 'From gg-' THEN BREAK
  98.         IF chk = ' From ad' THEN BREAK
  99.         IF chk = 'From ade' THEN BREAK
  100.         IF skip = 0 THEN DO
  101.             CALL WRITELN(guide,line)
  102.         END
  103.         IF skip = 1 THEN skip = 0
  104.         END
  105.  
  106.         CALL WRITELN(guide,'@ENDNODE 'cx'')
  107.         cx = cx + 1
  108.     END
  109.     OTHERWISE
  110.     END
  111. END
  112. cx = cx - 1
  113. IF tot != cx THEN DO
  114.     SAY 'Nodes Differ: Actual Nodes 'cx
  115. END
  116. SAY 'Closing files...'
  117. CALL CLOSE(fil)
  118. CALL CLOSE(guide)
  119. SAY 'Ready.'
  120. EXIT
  121.  
  122.